<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script type="text/javascript">
      /* 
        定义一个用来求两个数和的函数
          可以在函数的形参列表中来指定一个或多个形参(形式参数)
          多个形参之间使用,隔开,声明形参就相当于在函数内部声明了对应的变量
          但是并不强制要求赋值。
      */
      function sum(a, b) {
        console.log(a + b);
      }

      /* 
        在调用函数时,可以在()中指定实参(实际参数)
          实参将会赋值给函数(实参可以是任何值,但是函数中需要加效验)
      */
      sum(123, 456);

      /* 
        调用函数时解析器不会检查实参的类型
          所以要注意,是否有可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查

        函数的实参可以任意的数据类型
      */
      sum(true, false);
      /* 
        调用函数时,解析器不会检查实参的数量
          多余的实参不会被赋值
        
        如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
      */
      sum(123, 456, 'hello', true, null); //579
      sum(123); //NaN
    </script>
  </head>
  <body></body>
</html>
